package com.oa.service;

import com.github.pagehelper.Page;
import com.oa.pojo.Option;
import com.oa.pojo.PageBean;
import com.oa.pojo.PageInfo;
import com.oa.pojo.User;
import com.oa.utils.EntityException;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface UserService {
    // 获取所有用户
    List<User> getAll();

    // 根据ID获取一个用户
    User getOne(@Param("userId") String userId);

    // 根据ID获取该角色所在的部门ID
    String getDeptID(@Param("userId") String userId);

    // 根据用户ID获取该用户的角色ID
    String getRoleId(@Param("userId") String userId);

    // 根据ID获取该角色所在的部门领导（leader）对象
    User getLeaderByID(@Param("userId") String userId);

    // 根据用户名获取一个用户
    User getOneByName(@Param("username") String username);

    //{1}getDeptOptions
    List<Option> getDeptOptions();

    //{2}getRoleOptions
    List<Option> getRoleOptions();

    //{3}getUserList: 获取用户列表
    //{ps}你可以使用 Mybatis Page, 也可以使用 PageBean
    Page getUserList(int page, int limit, Map data);

    // 新增/更新用户
    void saveUser(Map<String, String> map) throws EntityException;

    // 删除用户
    int delUser(@Param("userId") String userId) throws EntityException;

    // 根据用户名和密码登录
    User login(@Param("username") String username, @Param("password") String password);
}
